console.log([] == ![]) //? true
/*
? 这里需要注意的是 JavaScript 中的隐式类型转换，以及运算符的优先级和结合性。
? 首先，右侧的 ![] 表达式会把空数组转换为布尔值 true，再进行逻辑非运算，结果为 false。
? 然后，左侧的 [] 表达式在比较相等性之前，会被强制转换为数字类型，因为比较运算符 == 需要两边的操作数类型相同。
? 由于数组是一个对象，对象在进行数字类型的强制转换时会先转换为字符串，再转换为数字。空数组转换为字符串后是一个空字符串 ""，再转换为数字就是 0。
? 因此，表达式变成了 0 == false，在比较相等性时，布尔值 false 会被转换为数字类型 0，所以结果为 true。
 */
